home *** CD-ROM | disk | FTP | other *** search
- package com.extensibility.validation;
-
- import com.extensibility.util.Debug;
- import com.extensibility.xml.DataTypeDeclaration;
- import com.extensibility.xml.SchemaIntf;
- import com.extensibility.xml.dt.DataType;
- import com.extensibility.xml.dt.DataTypeIntf;
- import java.util.Hashtable;
- import org.w3c.dom.Node;
-
- class LeafValidator {
- protected static LeafValidator soloFactory;
- protected Hashtable leafValidatorMap = new Hashtable();
-
- protected LeafValidator() {
- Debug.assert(soloFactory == null);
- this.leafValidatorMap.put(DataTypeIntf.ID, new IDLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.IDREF, new IDLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.IDREFS, new IDListLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.ENTITY, new NmTokenLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.ENTITIES, new NmTokenListLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.NMTOKEN, new NmTokenLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.NMTOKENS, new NmTokenListLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.ENUMERATION, new NmTokenListLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.NOTATION, new NcNameLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.STRING, new StringLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.NUMBER, new DecimalLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.INT, new IntegralLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.DECIMAL, new DecimalLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.BOOLEAN, new BooleanLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.DATETIME, new DateTimeLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.DATETIMETZ, new DateTimeLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.DATE, new DateTimeLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.TIME, new DateTimeLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.TIMETZ, new DateTimeLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.INTERVAL, new UnimplementedLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.I1, new IntegralLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.I2, new IntegralLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.I4, new IntegralLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.I8, new IntegralLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.UI1, new IntegralLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.UI2, new IntegralLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.UI4, new IntegralLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.UI8, new IntegralLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.R4, new DoubleLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.R8, new DoubleLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.FLOAT, new DoubleLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.FIXED144, new DecimalLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.UUID, new UnimplementedLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.URI, new UnimplementedLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.BINHEX, new UnimplementedLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.BINBASE64, new UnimplementedLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.CHAR, new CharLeafValidator());
- this.leafValidatorMap.put(DataTypeIntf.NOTATED, new UnimplementedLeafValidator());
- }
-
- protected static LeafValidator ensureFactory() {
- if (soloFactory == null) {
- soloFactory = new LeafValidator();
- }
-
- return soloFactory;
- }
-
- public static boolean isRootTypeName(String var0) {
- return ensureFactory().leafValidatorMap.containsKey(var0);
- }
-
- public static DataType getParentDataType(SchemaIntf var0, DataType var1) {
- String var2 = var1.getBaseType();
- if (var2.equals("")) {
- var2 = var1.getTypeName();
- }
-
- DataTypeDeclaration var3 = var0.getNamedDataType(var2);
- if (var3 != null) {
- DataType var4 = var3.getDataType();
- return var4 != var1 ? var4 : null;
- } else {
- return null;
- }
- }
-
- public static String getRootTypeName(SchemaIntf var0, DataType var1) {
- String var2 = var1.getTypeName();
- if (isRootTypeName(var2)) {
- return var2;
- } else {
- var2 = var1.getBaseType();
- if (var2.equals("")) {
- var2 = var1.getTypeName();
- }
-
- if (isRootTypeName(var2)) {
- return var2;
- } else {
- DataTypeDeclaration var3 = var0.getNamedDataType(var2);
- if (var3 != null) {
- DataType var4 = var3.getDataType();
- return var4 != var1 ? getRootTypeName(var0, var4) : null;
- } else {
- return null;
- }
- }
- }
- }
-
- public static DataValidator getLeafValidator(SchemaIntf var0, DataType var1) {
- String var2 = getRootTypeName(var0, var1);
- DataValidator var3 = var2 == null ? null : (DataValidator)ensureFactory().leafValidatorMap.get(var2);
- if (var3 == null) {
- var3 = createLeafValidator(var0, var1);
- }
-
- return var3;
- }
-
- public static String getTrimmedNodeValue(Node var0) {
- return var0 != null && var0.getNodeValue() != null ? var0.getNodeValue().trim() : "";
- }
-
- public static DataValidator createLeafValidator(SchemaIntf var0, DataType var1) {
- if (var1.hasEnumeration()) {
- return new EnumerationLeafValidator();
- } else if (var1.isNmTokens()) {
- return new UnimplementedLeafValidator();
- } else if (var1.isNotation()) {
- return new UnimplementedLeafValidator();
- } else {
- return (DataValidator)(var1.isEnumeration() ? new UnimplementedLeafValidator() : new InvalidTypeLeafValidator());
- }
- }
-
- public static String validate(SchemaIntf var0, DataType var1, String var2) {
- DataValidator var3 = getLeafValidator(var0, var1);
- return var3.validate(var0, var1, var2);
- }
- }
-